Many software development tools are available today for use by software designers (or “developers”) in creating various types of software applications. Software “designers” and “developers” are used interchangeably herein, and generally refer to anyone involved with using a software development tool for authoring a software application. Authoring may include coding, designing, and/or otherwise creating or modifying the software application. A software application, as used herein, generally refers to any application that may be executed by a processor (or interpreter of some type) in order to perform operations defined by the instructions of the software application, including as an example presenting a user interface to a display. One example of such a software application is a web page, which may be defined in a markup language, such as HTML, XML, etc., JAVA, and/or other underlying code that may be read and interpreted by a browser to generate a corresponding presentation of the web page to a display.
In a software development environment, a developer may interact with a software development tool for writing code, compiling the code, testing or debugging the code, and packaging the resulting application for deployment in a run-time environment. The software development tool may be implemented as a software application that is stored to a computer-readable medium and executed by a computer processor to perform the tasks associated with aiding a developer in the development of a software application. As one example, an integrated development environment (IDE) is commonly used for developing software applications. In general, an IDE is a programming environment that has been packaged as a software application program, typically including a code editor, a compiler, a debugger, and a graphical user interface (GUI) builder. The IDE may be a stand-alone application or may be included as part of one or more existing and compatible applications. IDEs provide a user-friendly framework for many modern programming languages, such as Visual Basic, Java, and PowerBuilder. IDEs for developing markup language (e.g., HTML, XML, etc.) applications are among the most commonly used.
Thus, IDEs provide software authoring tools that allow a developer (e.g., a web developer) to create web pages, websites, interactive applications, and the like for use by end users (e.g., visitors to websites). Various IDEs exist in the current marketplace, such as DREAMWEAVER®, available from Adobe Systems Incorporated, and FRONTPAGE®, available from Microsoft Corporation. DREAMWEAVER is an IDE that allows web developers to design Hypertext Markup Language (HTML) web pages in both a code editor and a graphical-based design time environment. DREAMWEAVER also allows the developer to design in other markup languages, such as, for example, Extensible Markup Language (XML), Extensible HTML (XHTML), Active Server Page (ASP), COLDFUSION™ Markup Language (CFML™) and the like.
Many software application authoring tools, as may be provided by an IDE, are available today for use by software developers in creating various types of software applications, including as examples such software code authoring tools as ADOBE® DREAMWEAVER® and MICROSOFT® FRONTPAGE®. Certain authoring tools, such as ADOBE® DREAMWEAVER®, allow a developer to create a document in an environment that includes both a text-based code view and a graphical-based design view. The code view renders the source code (e.g., markup language code) as text in a portion of the screen and allows the developer to see and manipulate the source code in the document file. For example, the developer may write and edit HTML or Cascading Style Sheets (CSS) code in the code view. The design view (or “display view”), on the other hand, is a What You See Is What You Get (WYSIWYG) view of the document that allows the user to visually manipulate the interpreted and graphically laid-out version of the document, such as, for example, by dragging, dropping, cutting, and pasting visual components. For instance, techniques similar to those employed by browsers may be employed for presenting the resulting output (e.g., web page) of the underlying code, wherein the developer may manipulate such output within the design view. As the developer works, changes to the document are reflected in both the code view and the design view.
In many instances, software code being authored within a software code authoring tool references an image that the software application (e.g., web page) being authored is to output. A user may generate and/or edit an image within an image editing application. Various image editing applications are known, such as ADOBE® PHOTOSHOP®, ADOBE® FIREWORKS®, COREL® PAINTER, COREL® PAINTSHOP PRO, COREL® PHOTO-PAINT, MICROSOFT® DIGITAL IMAGE, MICROSOFT® PAINT, etc. In many instances, an image editing application is used to generate an optimized version of an original, high-quality image, wherein the optimized version is optimized for use in the software application that references it. For instance, various characteristics/settings of an original image may be modified to generate a version of the image that is optimized in some way. For example, such settings of the original image may be modified as the file format (e.g., .gif, jpeg, or other desired file format may be selected), the number of colors that the image contains, an amount of data contained with the original image that may be discarded (e.g., the desired level of quality of the image may be selected), and/or whether the optimized image is to be in color or in black-and-white, as examples. Such settings may be selected so as to generate an optimized version of the image that is optimized for some desired operational feature of the software application (e.g., web page) that references the image, such as to reduce data storage requirements associated with storing the referenced image, to reduce transmission time associated with transmitting the referenced image over a communication network, etc.
Commonly, a developer desires to modify a high-quality original image by discarding some of the data contained in the high-quality original image in order to generate an optimized version of the image that is sufficiently small to be used effectively on a web page. To do so, the developer typically uses an image editing application, such as ADOBE® PHOTOSHOP®, ADOBE® FIREWORKS®, etc., to generate the optimized version of an image. Typically, a developer will perform a “SAVE AS” operation on the high-quality original image to save that image as a new image file that will have optimized settings, thus maintaining the original high-quality image unchanged so that it might be available if desired in the future. For the new image file being saved, the developer can choose various optimization settings, including the file format and other settings that effectively define how high of quality the optimized image should have (e.g., how much data from the high-quality original image should be discarded).
The user may then reference the optimized image in a software application being developed. For instance, the optimized image may be copied from the image editing application and pasted into the design view of a software code authoring tool, wherein the user may arrange the display of the optimized image to be presented by the application under development (e.g., a web page under development). As a result of pasting the optimized image into the design view, the corresponding textual code referencing the optimized image may be automatically generated by the authoring tool within the code view window. Thus, when the textual code is interpreted, such as by a browser, it causes the interpreter (e.g., browser) to output the optimized image as shown in the design view. Of course, in some instances, such as if the developer is working with a software authoring tool that does not provide a design view and/or does not support such pasting of an image in the manner described above, the user may elect to manually type the textual code referencing the optimized image.
Thereafter, if the developer desires to replace the referenced image with a different image, the developer performs the above-described actions for generating a new optimized image (e.g., defining the optimized settings for the new image) and then replaces the reference to the image that is no longer wanted with a reference to the new optimized image. For instance, generally if a modification is desired for the referenced image, such modification is made by working with the original high-quality image within an image editing application. Once the high-quality original image is modified in the manner desired, then an optimized version of the modified original image is generated (e.g., using the above-described SAVE AS operation).
Often, all or a portion of the graphical layout of a software application, such as a web page, is designed within an image editing application using high-quality image(s). That is, a mock-up of the graphical layout of a software application (e.g., web page) may be created within an image editing application. Once the mock-up is created, optimization actions may be performed to generate optimized versions of the high-quality original image(s) forming the mock-up. For instance, the above-described SAVE AS operation may be performed wherein the optimization settings are defined for each of the images in the graphical layout to may be saved as optimized versions. Then, the optimized versions of the image(s) are referenced in the software code of the application, such as by copying and pasting them into the design view window or referencing them in the textual code, as discussed above.
Traditionally, if a change is made within the mock-up to the original high-quality images in the image editing application, the user then repeats the optimization operations to generate a new optimized image and replaces the reference in the software code to reference the new optimized image. That is, if the developer desires to replace a reference to a first optimized image in the software code with a reference to a second image, the developer must perform the optimization actions to again define the desired optimization settings for the second image, even though the optimization settings desired for the second image are typically desired to be the same as those previously defined for the first image. Thus, each time that a referenced image is desired to be replaced with a revised image, the user is required to define the desired optimization settings for the corresponding optimized image, which is undesirably inefficient.